import type {
  EntityApi,
  EntityPage,
  EntityReq,
  EntityModel,
  EntityTotal,
  EntityKey,
  EntityKeyList,
  EntityCreateReq,
  EntityUpdateReq,
} from "jmash-core";

export interface ModuleApi extends EntityApi {}

// 模块的查询参数
export interface ModuleReq extends EntityReq {
  tenant?: string;
  // 模块编码
  moduleCode?: string;
  // 模块名称
  likeModuleName?: string;
}

// 模块管理分页
export interface ModulePage extends EntityPage {
  // 页数
  curPage: number;
  // 条数
  pageSize: number;
  // 当前页内容
  results: Array<ModuleModel>;
  // 总记录数
  totalSize: number;
  // 本页小计
  subTotalDto: ModuleModelTotal;
  // 合计
  totalDto: ModuleModelTotal;
}

// 合计
export interface ModuleModelTotal extends EntityTotal {
  // 总记录数
  totalSize: number;
}

// 新增查询
export interface ModuleCreateReq extends EntityCreateReq {
  // 租户
  tenant?: string;
  // 用于检测重复请求的唯一字符串ID
  requestId?: string;
  // 编码
  moduleCode?: string;
  // 名称
  moduleName?: string;
  // 描述
  description?: string;
}

// 编辑查询
export interface ModuleUpdateReq extends EntityUpdateReq {
  // 租户
  tenant?: string;
  // 用于检测重复请求的唯一字符串ID
  requestId?: string;
  // 更新字段掩码
  updateMask: string;
  // 模块ID
  moduleId?: string;
  // 编码
  moduleCode?: string;
  // 名称
  moduleName?: string;
  // 描述
  description?: string;
}

export type ModuleFormReq = ModuleCreateReq | ModuleUpdateReq;

// 系统模块实体
export interface ModuleModel extends EntityModel {
  // 模块ID
  moduleId?: string;
  // 模块编码
  moduleCode?: string;
  // 模块名称
  moduleName?: string;
  // 模块排序
  orderBy?: number;
  // 模块描述
  description?: string;
}

// 系统模块主键
export interface ModuleKey extends EntityKey {
  // 租户
  tenant?: string;
  // 模块ID
  moduleId?: string;
}

// 模块管理Key List
export interface ModuleKeyList extends EntityKeyList {
  // 租户
  tenant?: string;
  // 模块ID
  moduleId?: Array<string>;
}

export interface ModuleMoveKey {
  // 租户
  tenant?: string;
  moduleId?: string;
  up?: boolean;
}
